﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace UnitOfWorkCore.Domain.Abstractions
{
    /// <summary>
    /// 工作单元的接口，它继承自 IDisposable 接口，表示该接口的实现类需要支持资源释放操作
    /// </summary>
    public interface IUnitOfWork //: IDisposable
    {
        /// <summary>
        /// 用于保存对数据库的更改，返回受影响的数据库行数
        /// </summary>
        /// <param name="cancellationToken">可选参数，默认值为 default，它用于支持取消操作的机制</param>
        /// <returns></returns>
        Task<int> SaveChangesAsync(CancellationToken cancellationToken = default);

        /// <summary>
        /// 用于保存对数据库的更改，返回操作是否成功
        /// </summary>
        /// <param name="cancellationToken">可选参数，默认值为 default，它用于支持取消操作的机制</param>
        /// <returns></returns>
        Task<bool> SaveEntitiesAsync(CancellationToken cancellationToken = default);
    }
}
